package a11_GeneticClass;

/**
 * @Author quan
 * @Description 知识点3：泛型接口的使用
 * @Date 2023/3/4 11:59
 */
public class GInterfaceUse {
    interface IMessage<T>{//泛型接口
        public abstract void printFun(T t);//抽象方法
    }
    //注意两种情况的写法格式~~
    //情况1：当子类实现泛型接口时，子类也是个泛型类
    class Fun1<T> implements IMessage<T>{
        @Override//重写接口中的抽象方法
        public void printFun(T t) {
            System.out.println(t);//
        }
    }
    //情况2：当子类实现泛型接口时，子类已经明确了具体的数据类型
    class Fun2 implements IMessage<String>{
        @Override
        public void printFun(String s) {
            System.out.println(s);
        }
    }
    //测试
    public static void main(String[] args) {
        GInterfaceUse.Fun1 fun1 = new GInterfaceUse().new Fun1();
        fun1.printFun(111);//传任意类型
        GInterfaceUse.Fun2 fun2 = new GInterfaceUse().new Fun2();
        fun2.printFun("hello");//只能传字符串
    }
}
